Technical Q&A

Java 11 - Java File Paths are not Unix File Paths (Updated 20-March-2000)


Q: Java ÉRÅ[ÉhÇ≈ÉtÉ@ÉCÉãÇóòópǵǃǢNjÇ∑ÅBDZÇÃÉRÅ[ÉhÇÕ Unix ÉVÉXÉeÉÄè„Ç≈ÇÕ䯇¯Ç…ìÆçÏǵNjÇ∑Ç™ÅAMacintosh è„Ç≈ÇÕǧNjÇ≠ìÆçÏǵNjÇπÇÒÅBÇ»Ç∫Ç≈ǵÇÂǧǩÅH

A: Java Ç…Ç®ÇØÇÈÉtÉ@ÉCÉãÇÃÉpÉXÇÃédólÇÕ Unix ÇÃédólÇΔàŸÇ»ÇËÇ‹Ç∑ÅBà»â∫ÇÃÇÊǧǻ Unix Ç…ì¡óLÇÃÉpÉXÇÃéwíËï˚ñ@ÇîÇØÇƒÅAJava ÉRÅ[ÉhÇ™ÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…àÀë∂ǵǻǢÇÊǧDžÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

  • Åg/tmpÅhÇÕÅAèëÇ´çûÇ›â¬î\Ç»àÍéûÉfÉBÉåÉNÉgÉäÇÕïKÇ∏ǵLJë∂ç›ÇµÇ‹ÇπÇÒÅBMRJ ÇégǡǃǢÇÈÇΔÇ´ÇÕÅAMRJToolkit Ç≈ÅgTemporary ItemsÅhÉtÉHÉãÉ_ÅiàÍéûégópçÄñ⁄ópÉtÉHÉãÉ_ÅjÇéÊìæÇµÇ‹Ç∑ÅBéüÇÃÉTÉìÉvÉãÉNÉâÉXÇÇ≤óóâ∫Ç≥Ç¢ÅB

import java.io.File;
import java.io.FileNotFoundException;

import com.apple.mrj.MRJFileUtils;

public class MRJTempFolder
{
    /**
     * Mac OS ÇÃÅgTemporary ItemsÅhÉtÉHÉãÉ_ÅiàÍéûégópçÄñ⁄ópÉtÉHÉãÉ_ÅjÇï‘Ç∑ÅB
     * ÅgTemporary ItemsÅhÉtÉHÉãÉ_ÅiàÍéûégópçÄñ⁄ópÉtÉHÉãÉ_ÅjÇï\Ç∑ File ÉIÉuÉWÉFÉNÉgÇ
     * ï‘Ç∑Ç©ÅAǪÇÃÉtÉHÉãÉ_Çå©Ç¬ÇØÇÁÇÍǻǩǡÇΩèÍçáÇÕ null Çï‘Ç∑ÅB
     */
    public static File getTempFolder()
    {
        File tempFolder = null;
        
        try
        {
            tempFolder = MRJFileUtils.findFolder(MRJFileUtils.kTemporaryFolderType);
        }
        catch (FileNotFoundException exc) { }
        
        return tempFolder;
    }
}

  • Åg/dev/nullÅhÇégǡǃÅAÉrÉbÉgÉoÉPÉbÉgÇ÷ÇÃèëÇ´çûÇ›ÇÕÇ≈Ç´Ç‹ÇπÇÒÅBë„ÇÌÇËÇ…ÅAjava.io.OutputStream ÇÃÉTÉuÉNÉâÉXÇégǡǃ write(int) ÇãÛÇÃÉÅÉ\ÉbÉhÇΔǵǃé¿ëïǵÅAÉRÉìÉXÉgÉâÉNÉ^ java.io.PrintStream ÇâÓǵǃÉTÉuÉNÉâÉXÇÃÉCÉìÉXÉ^ÉìÉXÇ System.setOut Ç…ìnǵNjÇ∑ÅBéüÇÃÉTÉìÉvÉãÉNÉâÉXÇéQçlDžǵǃÇ≠ÇæÇ≥Ç¢ÅB

import java.io.*;

/**
 * ïsóvÇ»ÉoÉCÉgÇÃÉåÉ|ÉWÉgÉä
 * äÓñ{ìIÇ…ÇÕ /dev/null ÇíuÇ´ä∑ǶÇÈ
 */
public class BitBucketOutputStream extends OutputStream
{
    /**
     * BitBucketOutputStream ÇèoóÕÇΔǵǃégǶÇÈÇÊǧDž System.Out Çê›íËÇ∑ÇÈÅB
     * åãâ ÇΔǵǃÅAïWèÄÇÃèoóÕÇégÇÌǻǢDZÇΔÇ…Ç»ÇÈÅB
     * restoreSystemOut ÇéQèΔ
     */
    public static void nullSystemOut()
    {
        System.setOut(new PrintStream(new BitBucketOutputStream(), true));
    }
    
    /**
     * ÉfÉtÉHÉãÉgÇà System.out Ç…éóÇΩ System.out ÇçƒìxçÏê¨Çµ
     * ÉfÉtÉHÉãÉgÇÃìÆçÏÇïúå≥Ç∑ÇÈÅB
     * nullSystemOut ÇéQèΔ
     */
    public static void restoreSystemOut()
    {
        FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
        System.setOut(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
    }

    /**
     * BitBucketOutputStream ÇèoóÕÉXÉgÉäÅ[ÉÄÇΔǵǃóòópÇ∑ÇÈÇÊǧDž System.err Ç
     * ê›íËÇ∑ÇÈÅBåãâ ÇΔǵǃÅAïWèÄÇÃÉGÉâÅ[ÇégÇÌǻǢDZÇΔÇ…Ç»ÇÈÅB
     * restoreSystemErr ÇéQèΔÅB
     */
    public static void nullSystemErr()
    {
        System.setErr(new PrintStream(new BitBucketOutputStream(), true));
    }
    
    /**
     * ÉfÉtÉHÉãÉgÇà System.err Ç…éóÇΩ System.err ÇçƒìxçÏê¨Çµ
     * ÉfÉtÉHÉãÉgÇÃìÆçÏÇïúå≥Ç∑ÇÈÅB
     * nullSystemErr ÇéQèΔ
     */
    public static void restoreSystemErr()
    {
        FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
        System.setErr(new PrintStream(new BufferedOutputStream(fdErr, 128), true));
    }
    
    /**
     * éwíËÇ≥ÇÍÇΩÉoÉCÉgÇ…ëŒÇµÇƒâΩLJǵǻǢ
     *
     * @param      b ñ≥éãÇ∑ÇÈÉoÉCÉg
     * @exception  IOException ÇÕ I/O ÉGÉâÅ[Ç™ãNDZǡÇΩèÍçá
     */
    public void write(int b) throws IOException
    { }
}